package srv;

import java.util.ArrayList;
import java.util.List;

import beans.ItemCotizacionBean;
import beans.RodamientoBean;

import dao.*;

import entities.ItemCotizacionEntity;
import entities.RodamientoEntity;
public class ItemCotizacionSRV 
{
	private static HibernateItemCotizacionBeanDAO dao;
	private static ItemCotizacionSRV instancia;
	
	static 
	{
		dao = HibernateItemCotizacionBeanDAO.getInstancia();
	}
	
	public static ItemCotizacionSRV getInstancia()
	{
		if (instancia == null)
		{
			instancia = new ItemCotizacionSRV();
		}
		return instancia;
	}
	
	public ItemCotizacionEntity pasadoDesdeBean (ItemCotizacionBean itemCotizacionBean )
	{
		ItemCotizacionEntity item = new ItemCotizacionEntity();
		item.setCantidad( itemCotizacionBean.getCantidad());
		item.setEstadoItem( itemCotizacionBean.getEstadoItem());
		item.setPrecioCotizacion( itemCotizacionBean.getPrecioCotizacion());
		
		RodamientoEntity rodamiento = RodamientoSRV.getInstancia().pasadoDesdeBean( itemCotizacionBean.getRodamiento()); 
		item.setRodamiento(rodamiento);
		
		return item;
		
	}
	
	public ItemCotizacionBean pasadoDesdeEntity (ItemCotizacionEntity itemCotizacionEntity )
	{
		ItemCotizacionBean item = new ItemCotizacionBean();
		item.setCantidad( itemCotizacionEntity.getCantidad());
		item.setEstadoItem( itemCotizacionEntity.getEstadoItem());
		item.setPrecioCotizacion( itemCotizacionEntity.getPrecioCotizacion());
		
		RodamientoBean rodamiento = RodamientoSRV.getInstancia().pasadoDesdeEntity( itemCotizacionEntity.getRodamiento()); 
		item.setRodamiento(rodamiento);
		
		return item;
		
	}
	
	public List<ItemCotizacionBean> obtenerItemsPorMarcaYOrigen( ItemCotizacionBean it, String marca, String origen )
	{
		ItemCotizacionEntity ie = ItemCotizacionSRV.getInstancia().pasadoDesdeBean(it);
		
		List<ItemCotizacionEntity> itemsEntity = dao.obtenerItemsPorMarcaYOrigen( ie, marca, origen );
		List<ItemCotizacionBean> items = new ArrayList<ItemCotizacionBean>();
		
		for( ItemCotizacionEntity ice : itemsEntity )
		{
			ItemCotizacionBean i = new ItemCotizacionBean();
			i.setCantidad(ice.getCantidad());
			i.setEstadoItem(ice.getEstadoItem());
			i.setPrecioCotizacion(ice.getPrecioCotizacion());
			i.setRodamiento(RodamientoSRV.getInstancia().pasadoDesdeEntity(ice.getRodamiento()));
			items.add(i);
		}
		
		return items;	
	}

	public boolean haySuficienteStock(ItemCotizacionBean i) 
	{
		ItemCotizacionEntity ice = this.pasadoDesdeBean( i );
		return dao.haySuficienteStock( ice );
	}
	
	public void modificarItem( ItemCotizacionBean i )
	{
		ItemCotizacionEntity ice = this.pasadoDesdeBean( i );
		dao.modificarItem( ice );
	}
}
